Computer systems can be viewed as having three components: hardware, applications and an operating system. The operating system provides the interface between the hardware and applications. The operating system manages and controls the hardware component on one side and manages and has some control over the applications on the other side.
When a computer system is initialized, the operating system is responsible for establishing a functional alliance between the hardware and applications. The operating system must initialize various hardware components. This is usually done by interfacing with various device drivers.
In some operating systems (e.g., UNIX and Windows NT), the kernel is the core of the operating system. Generally, the kernel interacts directly with the hardware and isolates the hardware from the applications. The kernel also manages the sequential sharing of the central processing unit (CPU). The kernel manages the multi-tasking of the CPU making it relatively invisible to the user.
The United States Government has developed a removable cryptographic card implemented in a Personal Computer Memory Card Interface Association (PCMCIA) device. One specific example is a FORTEZZA PLUS cryptographic card. However, there are several versions of the PCMCIA cryptographic card available today and several more in the design phase.
All of these devices share a common design. In these devices, all of the data passes through a common memory area which can contain red data, black data, and/or command data. As used herein, red data is sensitive data and is also referred to as plain text or non-encrypted data. Also, as used herein, black data is non-sensitive data and is also referred to as cipher text or encrypted data. This creates a problem for high grade cryptographic systems which require separation of red data, black data and command data. Some of the cryptographic cards also permit multiple cryptographic channels to be established. These cards have the additional problem of keeping red data from each individual channel separate. Finally, a high grade cryptographic system must guarantee data separation in a fail-safe manner. The current technology does not provide any assurances that the sensitive and non-sensitive data being sent to the cryptographic card is not being mixed.
What are needed are a method and apparatus for providing data separation across the common memory interface of the cryptographic card.